package com.gesis.persistence;

import java.util.List;

import com.gesis.entity.GesTopic;

/**
 * Interface for GesTopicDAO.
 * 
 * @author MyEclipse Persistence Tools
 */

public interface IGesTopicDAO {
	/**
	 * Perform an initial save of a previously unsaved GesTopic entity. All
	 * subsequent persist actions of this entity should use the #update()
	 * method. This operation must be performed within the a database
	 * transaction context for the entity's data to be permanently saved to the
	 * persistence store, i.e., database. This method uses the
	 * {@link javax.persistence.EntityManager#persist(Object)
	 * EntityManager#persist} operation.
	 * 
	 * <pre>
	 * EntityManagerHelper.beginTransaction();
	 * IGesTopicDAO.save(entity);
	 * EntityManagerHelper.commit();
	 * </pre>
	 * 
	 * @param entity
	 *            GesTopic entity to persist
	 * @throws RuntimeException
	 *             when the operation fails
	 */
	public void save(GesTopic entity);

	/**
	 * Delete a persistent GesTopic entity. This operation must be performed
	 * within the a database transaction context for the entity's data to be
	 * permanently deleted from the persistence store, i.e., database. This
	 * method uses the {@link javax.persistence.EntityManager#remove(Object)
	 * EntityManager#delete} operation.
	 * 
	 * <pre>
	 * EntityManagerHelper.beginTransaction();
	 * IGesTopicDAO.delete(entity);
	 * EntityManagerHelper.commit();
	 * entity = null;
	 * </pre>
	 * 
	 * @param entity
	 *            GesTopic entity to delete
	 * @throws RuntimeException
	 *             when the operation fails
	 */
	public void delete(GesTopic entity);

	/**
	 * Persist a previously saved GesTopic entity and return it or a copy of it
	 * to the sender. A copy of the GesTopic entity parameter is returned when
	 * the JPA persistence mechanism has not previously been tracking the
	 * updated entity. This operation must be performed within the a database
	 * transaction context for the entity's data to be permanently saved to the
	 * persistence store, i.e., database. This method uses the
	 * {@link javax.persistence.EntityManager#merge(Object) EntityManager#merge}
	 * operation.
	 * 
	 * <pre>
	 * EntityManagerHelper.beginTransaction();
	 * entity = IGesTopicDAO.update(entity);
	 * EntityManagerHelper.commit();
	 * </pre>
	 * 
	 * @param entity
	 *            GesTopic entity to update
	 * @return GesTopic the persisted GesTopic entity instance, may not be the
	 *         same
	 * @throws RuntimeException
	 *             if the operation fails
	 */
	public GesTopic update(GesTopic entity);

	public GesTopic findById(Long id);

	/**
	 * Find all GesTopic entities with a specific property value.
	 * 
	 * @param propertyName
	 *            the name of the GesTopic property to query
	 * @param value
	 *            the property value to match
	 * @return List<GesTopic> found by query
	 */
	public List<GesTopic> findByProperty(String propertyName, Object value);

	public List<GesTopic> findByTopStartDate(Object topStartDate);

	public List<GesTopic> findByTopEndDate(Object topEndDate);

	public List<GesTopic> findByTopNameTopic(Object topNameTopic);

	public List<GesTopic> findByTopP1(Object topP1);

	public List<GesTopic> findByTopP2(Object topP2);

	public List<GesTopic> findByTopP3(Object topP3);

	public List<GesTopic> findByTopP4(Object topP4);

	public List<GesTopic> findByTopP5(Object topP5);

	public List<GesTopic> findByTopP6(Object topP6);

	public List<GesTopic> findByTopP7(Object topP7);

	public List<GesTopic> findByTopP8(Object topP8);

	public List<GesTopic> findByTopP9(Object topP9);

	public List<GesTopic> findByTopP10(Object topP10);

	public List<GesTopic> findByTopP11(Object topP11);

	public List<GesTopic> findByTopP12(Object topP12);

	public List<GesTopic> findByTopP13(Object topP13);

	public List<GesTopic> findByTopP14(Object topP14);

	public List<GesTopic> findByTopP15(Object topP15);

	public List<GesTopic> findByTopP16(Object topP16);

	public List<GesTopic> findByTopP17(Object topP17);

	public List<GesTopic> findByTopP18(Object topP18);

	public List<GesTopic> findByTopP19(Object topP19);

	public List<GesTopic> findByTopP20(Object topP20);

	public List<GesTopic> findByTopP21(Object topP21);

	public List<GesTopic> findByTopP22(Object topP22);

	public List<GesTopic> findByTopP23(Object topP23);

	public List<GesTopic> findByTopForschung1(Object topForschung1);

	public List<GesTopic> findByTopForschung2(Object topForschung2);

	public List<GesTopic> findByTopForschung3(Object topForschung3);

	public List<GesTopic> findByTopForschung4(Object topForschung4);

	public List<GesTopic> findByTopForschung5(Object topForschung5);

	public List<GesTopic> findByTopForschung6(Object topForschung6);

	public List<GesTopic> findByTopForschung7(Object topForschung7);

	public List<GesTopic> findByTopForschung8(Object topForschung8);

	public List<GesTopic> findByTopForschung9(Object topForschung9);

	public List<GesTopic> findByTopForschung10(Object topForschung10);

	public List<GesTopic> findByTopForschung11(Object topForschung11);

	public List<GesTopic> findByTopForschung12(Object topForschung12);

	/**
	 * Find all GesTopic entities.
	 * 
	 * @return List<GesTopic> all GesTopic entities
	 */
	public List<GesTopic> findAll();
}